

const buildData = {
    // 将neo4j的数据转换为AntV数据
    neo4jDataToAntV(neoData){
        if(neoData.length==0){
            return
        }
        const antV={
            nodes:[],
            edges:[]
        }
        let map={}
        const newData=this.getUnniBySet(neoData)
        newData.forEach(elent=>{
            map[elent.n.elementId]=elent.n.properties.id
            map[elent.r.elementId]=elent.r.properties.id
        })
        newData.forEach(item=>{
            let nodeObj={
                inPoints:[[0,1],[0,-1],[1,0],[-1,0]]
            }
            let edgeObj= {
            }
            if(Object.keys(item.n).length>0){
                Object.assign(nodeObj,item.n.properties)
                nodeObj.x=Number(nodeObj.x)
                nodeObj.y=Number(nodeObj.y)
                if(!item.n.properties.id){
                    nodeObj.id=item.n.elementId
                }
                antV.nodes.push(nodeObj)
            }
            if(Object.keys(item.r).length>0){
                Object.assign(edgeObj,item.r.properties)
                if(!item.r.properties.id){
                    edgeObj.id=item.r.elementId
                }
                edgeObj.start={}
                edgeObj.end={}
                edgeObj.start.x=item.r.properties.start[0]
                edgeObj.start.y=item.r.properties.start[1]
                edgeObj.end.x=item.r.properties.end[0]
                edgeObj.end.y=item.r.properties.end[1]
                edgeObj.sourceId=map[item.r.startNodeElementId]
                edgeObj.source=edgeObj.sourceId
                edgeObj.targetId=map[item.r.endNodeElementId]
                edgeObj.target=edgeObj.targetId
                antV.edges.push(edgeObj)
            }
        })
        return antV
    },
    // 去重方法
    getUnniBySet(neoData){
        let set=new Set();
        let onlyData=[];
        neoData.forEach(item=>{
            if(item.n){
                if(!set.has(item.n.elementId)){
                    set.add(item.n.elementId)
                    onlyData.push(item)
                }
            }
            else if(item.r){
                if(!set.has(item.r.elementId)){
                    set.add(item.r.elementId)
                    onlyData.push(item)
                }
            }

        })
        return onlyData

    }
}
export default buildData
